package ${table.packageNames.service};

<#list table.importPackages.service as pkg>
import ${pkg};
</#list>

/**
 * <p>
 * ${table.comment!} 服务类
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
public interface ${table.serviceName}<#if isMybatisPlus> extends IService<${table.entityName}></#if> {
<#if isGenerateBaseCRUD>
    /**
     * 批量添加
     *
     * @param list 实体对象集合
     * @return 是否执行成功
     */
    boolean saveBatch(List<${table.entityName}> list);

    /**
     * 添加一条数据
     *
     * @param ${table.capitalEntityName} 实体对象
     * @return 是否执行成功
     */
    boolean save(${table.entityName} ${table.capitalEntityName});

     /**
      * 添加对象中不为空的数据
      *
      * @param ${table.capitalEntityName} 实体对象
      * @return 是否执行成功
      */
    boolean saveNotEmpty(${table.entityName} ${table.capitalEntityName});

    /**
     * 根据id删除
     *
     * @param id id
     * @return 是否执行成功
     */
    boolean deleteById(Serializable id);

    /**
     * 根据id修改
     *
     * @param ${table.capitalEntityName} 实体对象
     * @return 是否执行成功
     */
    boolean updateById(${table.entityName} ${table.capitalEntityName});

     /**
      * 根据id修改 对象中不为空的数据
      *
      * @param ${table.capitalEntityName} 实体对象
      * @return 是否执行成功
      */
    boolean updateNotEmptyById(${table.entityName} ${table.capitalEntityName});

    /**
     * 根据 实体不为空的数据查询
     *
     * @param ${table.capitalEntityName} 实体对象
     * @return 检索后的集合
     */
    List<${table.entityName}> findListByEntity(${table.entityName} ${table.capitalEntityName});

    /**
     * 根据 实体不为空的数据查询
     *
     * @param ${table.capitalEntityName} 实体对象
     * @return 检索后的对象
     */
    ${table.entityName} get${table.entityName}ByEntity(${table.entityName} ${table.capitalEntityName});

     /**
      * 根据id查询对象
      *
      * @param id id
      * @return 查询后的对象
      */
    ${table.entityName} get${table.entityName}ById(Serializable id);

    <#if isPageMethod>
    /**
     * 根据传入的实体内容作为检索条件 进行分页查询
     *
     * @param ${table.capitalEntityName} 实体对象
     * @param pageIndex   起始页
     * @param pageSize    每页页数
     * @return 分页结果
     */
    PageInfo<${table.entityName}> queryTableData(${table.entityName} ${table.capitalEntityName},Integer pageIndex, Integer pageSize);
    </#if>
</#if>
}
